/**
 *====================================================
 * 文件名称: FinanceManagementActionApi.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年10月19日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.action.v1;

import java.math.BigDecimal;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.project.action.v1.model.output.BadassetsHandleDetail;
import com.yuexunit.finance.project.action.v1.model.output.BadassetsHandleLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.ReturnFinanceDetail;
import com.yuexunit.finance.project.action.v1.model.output.ReturnFinanceLineInfo;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/**
 * @ClassName: FinanceManagementActionApi
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2015年10月19日 上午6:46:12
 */
public interface FinanceBulkstockManagementActionApi {
	
	@Permission
	@Action(version = FinVersion1.class, description = "创建融资退货-未确认监管的部分可进行退货操作")
	@Parameter(name = "returnId", description = "退货单ID")
	public String createReturnFinanceBulkstock(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "deductionAmount", description = "扣减金额") BigDecimal deductionAmount,
			@Parameter(name = "remark", description = "退货备注") String remark,
			@Parameter(name = "bulkstockId", description = "融资货物ID") Long[] bulkstockIds,
			@Parameter(name = "quantity", description = "﻿退货数量") BigDecimal[] quantitys,
			@Parameter(name = "unit", description = "单位") String[] units
	);

	@Permission
	@Action(version = FinVersion1.class, description = "修改融资退货-未确认监管的部分可进行退货操作")
	public void updateReturnFinanceBulkstock(
			@Parameter(name = "returnId", description = "﻿退货单ID") Long returnId,
			@Parameter(name = "deductionAmount", description = "扣减金额") BigDecimal deductionAmount,
			@Parameter(name = "remark", description = "退货备注") String remark,
			@Parameter(name = "returnBulkstockId", description = "退货明细ID") Long[] returnBulkstockIds,
			@Parameter(name = "bulkstockId", description = "融资货物ID") Long[] bulkstockIds,
			@Parameter(name = "quantity", description = "﻿退货数量") BigDecimal[] quantitys,
			@Parameter(name = "unit", description = "单位") String[] units
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取理货任务明细")
	public ReturnFinanceDetail inquireReturnFinanceDetail(
			@Parameter(name = "returnId", description = "﻿退货单ID") Long returnId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询理货任务列表")
	public PageList<ReturnFinanceLineInfo> inquireReturnFinancePageList(
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "financeNumber", description = "﻿融资信息编号", nullable = true) String financeNumber,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	//====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "不良资产处置")
	@Parameter(name = "badassetsHandleId", description = "不良资产处置ID")
	public String createBadassetsHandle(
			@Parameter(name = "financeId", description = "融资信息ID") Long financeId,
			@Parameter(name = "handleReson", description = "不良资产处置原因 系统参数ID=9") Integer handleReson,
			@Parameter(name = "transactorMethod", description = "处置方式") String transactorMethod,
			@Parameter(name = "transactorAmount", description = "处置金额") BigDecimal transactorAmount,
			@Parameter(name = "transactorRemark", description = "处置备注", nullable = true) String transactorRemark,
			@Parameter(name = "inventoryId", description = "货箱ID") Long[] inventoryIds
	);

	@Permission
	@Action(version = FinVersion1.class, description = "不良资产处置明细")
	public BadassetsHandleDetail inquireBadassetsHandleDetail(
			@Parameter(name = "badassetsHandleId", description = "不良资产处置ID") Long badassetsHandleId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "不良资产处置列表")
	public PageList<BadassetsHandleLineInfo> inquireBadassetsHandlePageList(
			@Parameter(name = "badassetsHandleId", description = "不良资产处置ID", nullable = true) Long[] badassetsHandleIds,
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "enterpriseId", description = "﻿融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "融资企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

}
